The industry standard for animation authoring tools uses a key frame, which is defined as a point in time, and a set of property changes that occur at that point in time. The properties can be anything from the color of an object to the entire contents of the scene, for example. Some tools, such as Macromedia Flash, represent key frames at the layer level and store the entire state of all objects in the layer at that point in time. Other tools, such as Adobe Live Motion, represent key frames on the attributes of an object, so that an indicator is stored on every property of an object which tells whether or not the property is animated. Both approaches have several drawbacks.
A drawback of representing key frames at the layer level and storing the entire state of all objects in the layer at that point in time is that it is difficult for the user to determine from the user interface which properties are being animated on any particular object. Another drawback of this approach is that it is very difficult for the user to animate the value of a property across one of these key frames. For example, if the user wants the value of the color of an object to change from red to blue starting at 1 second, and ending at 3 seconds, he could do this by setting up a key frame at 1 second containing the color red and a key frame at 3 seconds containing the color blue. If the user then wanted to start the object moving at time 2, he could do this by setting a key frame at time 2. However, because of the key frame model, this key frame would also contain the value of the color at time 2. If the user ever changed the time value of this key frame, the color animation would change as well. There is no way for the user to resolve this other than by manually resetting the color value stored in that key frame so that a smooth interpolation from red to blue is restored.
The approach of representing key frames only on the attributes of an object has a drawback of, that in order to animate any property on an object, the user must search through a list of all properties on the object, and set the switch that makes that property animated, allowing key frames to be stored for that property. Furthermore, this approach requires the user to select or click a button on each property that he desires to animate. This can be cumbersome when trying to author an animation. Moreover, using this approach it is difficult to quickly determine at what times particular properties of an object are being animated, if the user cannot see all of the properties for the element on screen.
Many of the 2d animation tools currently on the market (Flash, After Effects, etc.) have animation as their primary mode of authoring. That is, most of the time that the user is interacting with the tool, he is working on an animation. However, as a tool whose primary task is user interface design, it is more desirable to allow the user to interact with the scene without having to think about animation. For instance, a user may keyframe a wiggle animation on a button which he has placed on his form, and then decide that the button is not in the correct position on the form. It would be desirable for the user to be able to do this without modifying all of the key frames in the wiggle animation. In other 2d tools, the user has to be constantly aware of where the current time marker is in the timeline used in the designing or authoring (and in some tools whether or not the property being edited can be keyframed).
In view of the foregoing, there is a need for systems and methods that overcome the limitations and drawbacks of the prior art.